/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package org.trandio.dao;

import org.trandio.model.BarrioVO;
import org.trandio.model.ProgramapypVO;
import org.trandio.model.FinalidadProcedVO;
import org.trandio.model.CausaExternaVO;
import org.trandio.model.GrupoQuirVO;
import org.trandio.model.DiscapacidadVO;
import org.trandio.model.EntidadVO;
import org.trandio.model.EspecialidadVO;
import org.trandio.model.TipoIdeVO;
import org.trandio.model.FinalidadConsultaVO;
import org.trandio.model.CuentaCobroVO;
import org.trandio.model.ManualVO;
import org.trandio.model.EstcivVO;
import org.trandio.model.ServicioVO;
import org.trandio.model.DeptoVO;
import org.trandio.model.ZonaVO;
import org.trandio.model.CorregVO;
import org.trandio.model.CentroCostoVO;
import org.trandio.model.AccesoriaVO;
import org.trandio.model.RegimenVO;
import org.trandio.model.TipoDxVO;
import org.trandio.model.ModalidadSubsidioVO;
import org.trandio.model.TipoVO;
import org.trandio.model.SexoVO;
import org.trandio.model.AmbitoVO;
import org.trandio.model.TipoDocVO;
import org.trandio.model.TipoRegistroVO;
import org.trandio.model.NivelSisbenVO;
import org.trandio.model.MupioVO;
import org.trandio.model.CopagosVO;
import org.trandio.model.MedicoVO;
import org.trandio.model.TipoPoblacionVO;
import org.trandio.model.GrupoActividadVO;
import org.trandio.model.DxVO;
import org.trandio.hb.TbAcompanante;
import org.trandio.hb.TbConfigAmbiente;
import org.trandio.hb.TbPrestador;
import org.trandio.hb.TbConfigUsuario;
import org.trandio.hb.TbDiagnostico;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import javax.naming.NamingException;
import org.trandio.util.ConexionDb;
import org.trandio.util.HibernateUtil;
import org.hibernate.HibernateException;
import org.hibernate.Query;
import org.hibernate.Session;
import org.trandio.hb.*;

/**
 *
 * @author root
 */
public class UtilidadesDAO implements UtilidadesInterface {
   
    @Override
    public List<TipoRegistroVO> consultarTipoRegistro() throws NamingException, SQLException {
        ConexionDb con = new ConexionDb();
        Connection conn;
        conn = con.traerConexion();

        List<TipoRegistroVO> listTipoRegistro = new ArrayList<TipoRegistroVO>();

        String sql = "select * from tb_tiporegistro";

        PreparedStatement stmt = conn.prepareStatement(sql);

        try {
            ResultSet res = stmt.executeQuery();
            try {
                while (res.next()) {
                    TipoRegistroVO treg = new TipoRegistroVO();
                    treg.setId(res.getInt("id"));
                    treg.setCodigo(res.getString("codigo"));
                    treg.setDescripcion(res.getString("descripcion"));
                    listTipoRegistro.add(treg);
                }

            } finally {
                res.close();
            }
        } finally {
            stmt.close();
            if (!conn.isClosed()) {
                conn.close();
            }
        }


        return listTipoRegistro;
    }

    @Override
    public List<GrupoQuirVO> consultarGrupoQuir() throws NamingException, SQLException {
        ConexionDb con = new ConexionDb();
        Connection conn;
        conn = con.traerConexion();

        List<GrupoQuirVO> listGrupoQuir = new ArrayList<GrupoQuirVO>();

        String sql = "select * from tb_grupoquir";

        PreparedStatement stmt = conn.prepareStatement(sql);
        try {
            ResultSet res = stmt.executeQuery();
            try {
                while (res.next()) {
                    GrupoQuirVO gquir = new GrupoQuirVO();
                    gquir.setId(res.getInt("id"));
                    gquir.setCodigo(res.getString("codigo"));
                    gquir.setDescripcion(res.getString("descripcion"));
                    listGrupoQuir.add(gquir);
                }
            } finally {
                res.close();
            }
        } finally {
            stmt.close();
            if (!conn.isClosed()) {
                conn.close();
            }
        }
        return listGrupoQuir;
    }

    @Override
    public List<ManualVO> consultarManual() throws NamingException, SQLException {
        ConexionDb con = new ConexionDb();
        Connection conn;
        conn = con.traerConexion();

        List<ManualVO> listManual = new ArrayList<ManualVO>();

        String sql = "select * from tb_manual";

        PreparedStatement stmt = conn.prepareStatement(sql);

        try {
            ResultSet res = stmt.executeQuery();
            try {
                while (res.next()) {
                    ManualVO manual = new ManualVO();
                    manual.setId(res.getInt("id"));
                    manual.setCodigo(res.getString("codigo"));
                    manual.setDescripcion(res.getString("descripcion"));
                    listManual.add(manual);
                }
            } finally {
                res.close();
            }
        } finally {
            stmt.close();
            if (!conn.isClosed()) {
                conn.close();
            }
        }

        return listManual;
    }

    @Override
    public List<GrupoActividadVO> consultarGrupoActividad() throws NamingException, SQLException {
        ConexionDb con = new ConexionDb();
        Connection conn;
        conn = con.traerConexion();

        List<GrupoActividadVO> listGrupoAct = new ArrayList<GrupoActividadVO>();

        String sql = "select * from tb_grupoactividad";

        PreparedStatement stmt = conn.prepareStatement(sql);

        try {
            ResultSet res = stmt.executeQuery();
            try {
                while (res.next()) {
                    GrupoActividadVO grupoAct = new GrupoActividadVO();
                    grupoAct.setId(res.getInt("id"));
                    grupoAct.setCodigo(res.getString("codigo"));
                    grupoAct.setDescripcion(res.getString("descripcion"));
                    listGrupoAct.add(grupoAct);
                }
            } finally {
                res.close();
            }
        } finally {
            stmt.close();
            if (!conn.isClosed()) {
                conn.close();
            }
        }

        return listGrupoAct;
    }

    @Override
    public List<EntidadVO> consultarEntidad() throws NamingException, SQLException {
        ConexionDb con = new ConexionDb();
        Connection conn;
        conn = con.traerConexion();

        List<EntidadVO> listEntidad = new ArrayList<EntidadVO>();

        String sql = "select * from tb_entidad";

        PreparedStatement stmt = conn.prepareStatement(sql);
        try {
            ResultSet res = stmt.executeQuery();
            try {
                while (res.next()) {
                    EntidadVO entidad = new EntidadVO();
                    entidad.setId(res.getInt("id_entidad"));
                    entidad.setCodigo(res.getString("cod_entidad"));
                    entidad.setDescripcion(res.getString("descripcion"));
                    listEntidad.add(entidad);
                }
            } finally {
                res.close();
            }

        } finally {
            stmt.close();
            if (!conn.isClosed()) {
                conn.close();
            }
        }

        return listEntidad;

    }

    @Override
    public List<TipoVO> consultarTipo() throws NamingException, SQLException {
        ConexionDb con = new ConexionDb();
        Connection conn;
        conn = con.traerConexion();

        List<TipoVO> listTipo = new ArrayList<TipoVO>();

        String sql = "select * from tb_tipo_contrato";

        PreparedStatement stmt = conn.prepareStatement(sql);

        try {
            ResultSet res = stmt.executeQuery();
            try {
                while (res.next()) {
                    TipoVO tipo = new TipoVO();
                    tipo.setId(res.getInt("id"));
                    //tipo.setCodigo(res.getString("codigo"));
                    tipo.setDescripcion(res.getString("descripcion"));
                    listTipo.add(tipo);
                }
            } finally {
                res.close();
            }
        } finally {
            stmt.close();
            if (!conn.isClosed()) {
                conn.close();
            }
        }

        return listTipo;
    }

    @Override
    public List<RegimenVO> consultarRegimen() throws NamingException, SQLException {
        ConexionDb con = new ConexionDb();
        Connection conn;
        conn = con.traerConexion();

        List<RegimenVO> listRegimen = new ArrayList<RegimenVO>();

        String sql = "select * from tb_regimen";

        PreparedStatement stmt = conn.prepareStatement(sql);

        try {
            ResultSet res = stmt.executeQuery();
            try {
                while (res.next()) {
                    RegimenVO regimen = new RegimenVO();
                    regimen.setId(res.getInt("id"));
                    regimen.setCodigo(res.getString("codigo"));
                    regimen.setDescripcion(res.getString("descripcion"));
                    listRegimen.add(regimen);
                }
            } finally {
                res.close();
            }
        } finally {
            stmt.close();
            if (!conn.isClosed()) {
                conn.close();
            }
        }
        return listRegimen;
    }

    @Override
    public List<TipoDocVO> consultarTipoDoc() throws NamingException, SQLException {
        ConexionDb con = new ConexionDb();
        Connection conn;
        conn = con.traerConexion();

        List<TipoDocVO> listRegimen = new ArrayList<TipoDocVO>();

        String sql = "select * from tb_tipo_documento";

        PreparedStatement stmt = conn.prepareStatement(sql);

        try {
            ResultSet res = stmt.executeQuery();
            try {
                while (res.next()) {
                    TipoDocVO regimen = new TipoDocVO();
                    regimen.setId(res.getInt("id"));
                    regimen.setCodigo(res.getString("codigo"));
                    regimen.setDescripcion(res.getString("descripcion"));
                    listRegimen.add(regimen);
                }
            } finally {
                res.close();
            }
        } finally {
            stmt.close();
            if (!conn.isClosed()) {
                conn.close();
            }
        }

        return listRegimen;
    }

    @Override
    public List<TipoIdeVO> consultarTipoIde() throws NamingException, SQLException {
        ConexionDb con = new ConexionDb();
        Connection conn;
        conn = con.traerConexion();

        List<TipoIdeVO> listTipo = new ArrayList<TipoIdeVO>();

        String sql = "select * from tb_tipoidentificacion";

        PreparedStatement stmt = conn.prepareStatement(sql);

        try {
            ResultSet res = stmt.executeQuery();
            try {
                while (res.next()) {
                    TipoIdeVO tipo = new TipoIdeVO();
                    tipo.setId(res.getInt("id"));
                    tipo.setCodigo(res.getString("codigo"));
                    tipo.setDescripcion(res.getString("descripcion"));
                    listTipo.add(tipo);
                }
            } finally {
                res.close();
            }
        } finally {
            stmt.close();
            if (!conn.isClosed()) {
                conn.close();
            }
        }

        return listTipo;
    }

    @Override
    public List<SexoVO> consultarSexo() throws NamingException, SQLException {
        ConexionDb con = new ConexionDb();
        Connection conn;
        conn = con.traerConexion();

        List<SexoVO> listSexo = new ArrayList<SexoVO>();

        String sql = "select * from tb_sexo";

        PreparedStatement stmt = conn.prepareStatement(sql);

        try {
            ResultSet res = stmt.executeQuery();
            try {
                while (res.next()) {
                    SexoVO sexo = new SexoVO();
                    sexo.setId(res.getInt("id"));
                    sexo.setCodigo(res.getString("codigo"));
                    sexo.setDescripcion(res.getString("descripcion"));
                    listSexo.add(sexo);
                }
            } finally {
                res.close();
            }
        } finally {
            stmt.close();
            if (!conn.isClosed()) {
                conn.close();
            }
        }
        return listSexo;
    }

    @Override
    public List<DeptoVO> consultarDepto() throws NamingException, SQLException {
        ConexionDb con = new ConexionDb();
        Connection conn;
        conn = con.traerConexion();

        List<DeptoVO> listDepto = new ArrayList<DeptoVO>();

        String sql = "select * from tb_departamento";

        PreparedStatement stmt = conn.prepareStatement(sql);

        try {
            ResultSet res = stmt.executeQuery();
            try {
                while (res.next()) {
                    DeptoVO depto = new DeptoVO();
                    depto.setId(res.getInt("id"));
                    depto.setCodigo(res.getString("codigo"));
                    depto.setDescripcion(res.getString("descripcion"));
                    listDepto.add(depto);
                }
            } finally {
                res.close();
            }
        } finally {
            stmt.close();
            if (!conn.isClosed()) {
                conn.close();
            }
        }

        return listDepto;
    }

    @Override
    public List<MupioVO> consultarMupio(int id_depto) throws NamingException, SQLException {
        ConexionDb con = new ConexionDb();
        Connection conn;
        conn = con.traerConexion();

        List<MupioVO> listMupio = new ArrayList<MupioVO>();

        String sql = "select * from tb_municipio where id_departamento=" + id_depto;
        //String sql="select * from tb_municipio";
        PreparedStatement stmt = conn.prepareStatement(sql);

        try {
            ResultSet res = stmt.executeQuery();
            try {
                while (res.next()) {
                    MupioVO mupio = new MupioVO();
                    mupio.setId(res.getInt("id"));
                    mupio.setCodigo(res.getString("codigo"));
                    mupio.setDescripcion(res.getString("descripcion"));
                    listMupio.add(mupio);
                }
            } finally {
                res.close();
            }
        } finally {
            stmt.close();
            if (!conn.isClosed()) {
                conn.close();
            }
        }

        return listMupio;
    }

    @Override
    public List<ZonaVO> consultarZona() throws NamingException, SQLException {
        ConexionDb con = new ConexionDb();
        Connection conn;
        conn = con.traerConexion();

        List<ZonaVO> listZona = new ArrayList<ZonaVO>();

        String sql = "select * from tb_zona";

        PreparedStatement stmt = conn.prepareStatement(sql);

        try {
            ResultSet res = stmt.executeQuery();
            try {
                while (res.next()) {
                    ZonaVO zona = new ZonaVO();
                    zona.setId(res.getInt("id"));
                    zona.setCodigo(res.getString("codigo"));
                    zona.setDescripcion(res.getString("descripcion"));
                    listZona.add(zona);
                }
            } finally {
                res.close();
            }
        } finally {
            stmt.close();
            if (!conn.isClosed()) {
                conn.close();
            }
        }
        return listZona;
    }

    @Override
    public List<TipoPoblacionVO> consultarTipoPoblacion() throws NamingException, SQLException {
        ConexionDb con = new ConexionDb();
        Connection conn;
        conn = con.traerConexion();

        List<TipoPoblacionVO> listTipopop = new ArrayList<TipoPoblacionVO>();

        String sql = "select * from tb_tipopoblacion";

        PreparedStatement stmt = conn.prepareStatement(sql);

        try {
            ResultSet res = stmt.executeQuery();
            try {
                while (res.next()) {
                    TipoPoblacionVO tipopop = new TipoPoblacionVO();
                    tipopop.setId(res.getInt("id"));
                    tipopop.setCodigo(res.getString("codigo"));
                    tipopop.setDescripcion(res.getString("descripcion"));
                    listTipopop.add(tipopop);
                }
            } finally {
                res.close();
            }
        } finally {
            stmt.close();
            if (!conn.isClosed()) {
                conn.close();
            }
        }
        return listTipopop;
    }

    @Override
    public List<NivelSisbenVO> consultarNivelSisben() throws NamingException, SQLException {
        ConexionDb con = new ConexionDb();
        Connection conn;
        conn = con.traerConexion();

        List<NivelSisbenVO> listNivel = new ArrayList<NivelSisbenVO>();

        String sql = "select * from tb_nivelsisben";

        PreparedStatement stmt = conn.prepareStatement(sql);

        try {
            ResultSet res = stmt.executeQuery();
            try {
                while (res.next()) {
                    NivelSisbenVO nivel = new NivelSisbenVO();
                    nivel.setId(res.getInt("id"));
                    nivel.setCodigo(res.getString("codigo"));
                    nivel.setDescripcion(res.getString("descripcion"));
                    listNivel.add(nivel);
                }
            } finally {
                res.close();
            }
        } finally {
            stmt.close();
            if (!conn.isClosed()) {
                conn.close();
            }
        }

        return listNivel;
    }

    @Override
    public List<ModalidadSubsidioVO> consultarModalidadSubsidio() throws NamingException, SQLException {
        ConexionDb con = new ConexionDb();
        Connection conn;
        conn = con.traerConexion();

        List<ModalidadSubsidioVO> listModalidad = new ArrayList<ModalidadSubsidioVO>();

        String sql = "select * from tb_modalidadsubsidio";

        PreparedStatement stmt = conn.prepareStatement(sql);

        try {
            ResultSet res = stmt.executeQuery();
            try {
                while (res.next()) {
                    ModalidadSubsidioVO modalidad = new ModalidadSubsidioVO();
                    modalidad.setId(res.getInt("id"));
                    modalidad.setCodigo(res.getString("codigo"));
                    modalidad.setDescripcion(res.getString("descripcion"));
                    listModalidad.add(modalidad);
                }
            } finally {
                res.close();
            }
        } finally {
            stmt.close();
            if (!conn.isClosed()) {
                conn.close();
            }
        }
        return listModalidad;
    }

    @Override
    public List<DiscapacidadVO> consultarDiscapacidad() throws NamingException, SQLException {
        ConexionDb con = new ConexionDb();
        Connection conn;
        conn = con.traerConexion();

        List<DiscapacidadVO> listDiscapacidad = new ArrayList<DiscapacidadVO>();

        String sql = "select * from tb_discapacidad";

        PreparedStatement stmt = conn.prepareStatement(sql);

        try {
            ResultSet res = stmt.executeQuery();
            try {
                while (res.next()) {
                    DiscapacidadVO discapacidad = new DiscapacidadVO();
                    discapacidad.setId(res.getInt("id"));
                    discapacidad.setCodigo(res.getString("codigo"));
                    discapacidad.setDescripcion(res.getString("descripcion"));
                    listDiscapacidad.add(discapacidad);
                }
            } finally {
                res.close();
            }
        } finally {
            stmt.close();
            if (!conn.isClosed()) {
                conn.close();
            }
        }
        return listDiscapacidad;
    }

    @Override
    public List<EspecialidadVO> consultarEspecialidad() throws NamingException, SQLException {
        ConexionDb con = new ConexionDb();
        Connection conn;
        conn = con.traerConexion();

        List<EspecialidadVO> listEspecialidad = new ArrayList<EspecialidadVO>();

        String sql = "select * from tb_especialidad";

        PreparedStatement stmt = conn.prepareStatement(sql);

        try {
            ResultSet res = stmt.executeQuery();
            try {
                while (res.next()) {
                    EspecialidadVO especialidadVO = new EspecialidadVO();
                    especialidadVO.setId(res.getInt("id"));
                    especialidadVO.setCodigo(res.getString("codigo"));
                    especialidadVO.setDescripcion(res.getString("descripcion"));
                    listEspecialidad.add(especialidadVO);
                }
            } finally {
                res.close();
            }
        } finally {
            stmt.close();
            if (!conn.isClosed()) {
                conn.close();
            }
        }
        return listEspecialidad;
    }

    @Override
    public boolean getTurnos(int id_medico, Date date) throws NamingException, SQLException {
        ConexionDb con = new ConexionDb();
        Connection conn;
        conn = con.traerConexion();
        boolean resp = false;

        String sql = "SELECT "
                + "tb_turnomedico.id,"
                + "tb_turnomedico.fecha"
                + " FROM "
                + "public.tb_turnomedico,"
                + "public.tb_detalleturno "
                + "WHERE "
                + "tb_turnomedico.id = tb_detalleturno.id_turnomedico AND "
                + "tb_turnomedico.fecha = '" + date + "' AND "
                + "tb_turnomedico.id_medico = " + id_medico;

        System.out.println("Sql ver si el dia esta disponible: " + sql);
        PreparedStatement stmt = conn.prepareStatement(sql);

        try {
            ResultSet res = stmt.executeQuery();
            try {
                if (res.next()) {
                    resp = true;
                }
            } finally {
                res.close();
            }
        } finally {
            stmt.close();
            if (!conn.isClosed()) {
                conn.close();
            }
        }
        return resp;
    }

    @Override
    public List<ServicioVO> consultarServicioBuscador(String codigo, String descripcion) throws NamingException, SQLException {
        ConexionDb con = new ConexionDb();
        Connection conn;
        conn = con.traerConexion();

        List<ServicioVO> listServicio = new ArrayList<ServicioVO>();

        String condicion = "";


        if (!codigo.equals("")) {
            condicion = "WHERE tb_servicio.codigo='" + codigo + "'";
        }

        if (!descripcion.equals("")) {
            condicion = "WHERE tb_servicio.descripcion LIKE '%" + descripcion + "%'";
        }


        String sql = "select * FROM tb_servicio " + condicion;


        System.out.println("Buscar Servicio: " + sql);


        PreparedStatement stmt = conn.prepareStatement(sql);

        try {
            ResultSet res = stmt.executeQuery();
            try {
                while (res.next()) {
                    ServicioVO servicioVO = new ServicioVO();
                    servicioVO.setId(res.getInt("id"));
                    servicioVO.setCodigo(res.getString("codigo"));
                    servicioVO.setDescripcion(res.getString("descripcion"));
                    servicioVO.setCopago(res.getBoolean("copago"));
                    listServicio.add(servicioVO);
                }
            } finally {
                res.close();
            }
        } finally {
            stmt.close();
            if (!conn.isClosed()) {
                conn.close();
            }
        }
        return listServicio;
    }

    @Override
    public List<MedicoVO> consultarMedicoBuscador(String identificacion, String nombres) throws SQLException, NamingException {
        ConexionDb con = new ConexionDb();
        Connection conn;
        conn = con.traerConexion();

        List<MedicoVO> listMedico = new ArrayList<MedicoVO>();

        String condicion = "";


        if (!identificacion.equals("")) {
            condicion = "WHERE tb_medico.numero_identificacion LIKE '" + identificacion + "%'";
        }

        if (!nombres.equals("")) {
            condicion = "WHERE tb_medico.nombre1||''||tb_medico.nombre2||''||tb_medico.apellido1||''||tb_medico.apellido2 LIKE '%" + nombres + "%'";
        }


        String sql = "select * FROM tb_medico " + condicion;


        System.out.println("Buscar Medico: " + sql);


        PreparedStatement stmt = conn.prepareStatement(sql);

        try {
            ResultSet res = stmt.executeQuery();
            try {
                while (res.next()) {
                    MedicoVO medicoVO = new MedicoVO();
                    medicoVO.setId(res.getInt("id"));
                    medicoVO.setIdentificacion(res.getString("numero_identificacion"));
                    medicoVO.setNombre(res.getString("nombre1") + " " + res.getString("nombre2") + " " + res.getString("apellido1") + " " + res.getString("apellido2"));
                    listMedico.add(medicoVO);
                }
            } finally {
                res.close();
            }
        } finally {
            stmt.close();
            if (!conn.isClosed()) {
                conn.close();
            }
        }
        return listMedico;
    }

    @Override
    public List<CopagosVO> consultarCopagos() throws NamingException, SQLException {
        ConexionDb con = new ConexionDb();
        Connection conn;
        conn = con.traerConexion();

        List<CopagosVO> listCopagos = new ArrayList<CopagosVO>();

        String condicion = "";


        String sql = "select * FROM tb_copagos " + condicion;


        System.out.println("Buscar Copagos: " + sql);


        PreparedStatement stmt = conn.prepareStatement(sql);

        try {
            ResultSet res = stmt.executeQuery();
            try {
                while (res.next()) {
                    CopagosVO copagosVO = new CopagosVO();
                    copagosVO.setId(res.getInt("id"));
                    copagosVO.setN1(res.getInt("n1"));
                    copagosVO.setN2(res.getInt("n2"));
                    copagosVO.setN3(res.getInt("n3"));
                    copagosVO.setN4(res.getInt("n4"));
                    listCopagos.add(copagosVO);
                }
            } finally {
                res.close();
            }
        } finally {
            stmt.close();
            if (!conn.isClosed()) {
                conn.close();
            }
        }
        return listCopagos;
    }

    @Override
    public List<CentroCostoVO> consultarCentroCosto() throws NamingException, SQLException {
        ConexionDb con = new ConexionDb();
        Connection conn;
        conn = con.traerConexion();

        List<CentroCostoVO> listCentroCosto = new ArrayList<CentroCostoVO>();

        String sql = "select * from tb_centrocosto";

        PreparedStatement stmt = conn.prepareStatement(sql);
        try {
            ResultSet res = stmt.executeQuery();
            try {
                while (res.next()) {
                    CentroCostoVO ccosto = new CentroCostoVO();
                    ccosto.setId(res.getInt("id"));
                    ccosto.setCodigo(res.getString("codigo"));
                    ccosto.setDescripcion(res.getString("descripcion"));
                    listCentroCosto.add(ccosto);
                }
            } finally {
                res.close();
            }
        } finally {
            stmt.close();
            if (!conn.isClosed()) {
                conn.close();
            }
        }

        return listCentroCosto;
    }

    @Override
    public List<EstcivVO> consultarEstciv() throws NamingException, SQLException {
        ConexionDb con = new ConexionDb();
        Connection conn;
        conn = con.traerConexion();

        List<EstcivVO> listEstciv = new ArrayList<EstcivVO>();

        String sql = "select * from tb_estadocivil";

        PreparedStatement stmt = conn.prepareStatement(sql);

        try {
            ResultSet res = stmt.executeQuery();
            try {
                while (res.next()) {
                    EstcivVO estciv = new EstcivVO();
                    estciv.setId(res.getInt("id"));
                    estciv.setCodigo(res.getString("codigo"));
                    estciv.setDescripcion(res.getString("descripcion"));
                    listEstciv.add(estciv);
                }
            } finally {
                res.close();
            }
        } finally {
            stmt.close();
            if (!conn.isClosed()) {
                conn.close();
            }
        }
        return listEstciv;
    }

    @Override
    public List<BarrioVO> consultarBarrio(int correg) throws NamingException, SQLException {
        ConexionDb con = new ConexionDb();
        Connection conn;
        conn = con.traerConexion();

        List<BarrioVO> listBarrio = new ArrayList<BarrioVO>();

        String sql = "select * from tb_barrio where id_comuna=" + correg;

        PreparedStatement stmt = conn.prepareStatement(sql);

        try {
            ResultSet res = stmt.executeQuery();
            try {
                while (res.next()) {
                    BarrioVO barrio = new BarrioVO();
                    barrio.setId(res.getInt("id"));
                    barrio.setCodigo(res.getString("codigo"));
                    barrio.setDescripcion(res.getString("descripcion"));
                    listBarrio.add(barrio);
                }
            } finally {
                res.close();
            }
        } finally {
            stmt.close();
            if (!conn.isClosed()) {
                conn.close();
            }
        }

        return listBarrio;
    }

    @Override
    public List<CorregVO> consultarCorreg(int id_municipio) throws NamingException, SQLException {
        ConexionDb con = new ConexionDb();
        Connection conn;
        conn = con.traerConexion();

        List<CorregVO> listCorreg = new ArrayList<CorregVO>();

        String sql = "select * from tb_comuna where id_municipio=" + id_municipio;

        PreparedStatement stmt = conn.prepareStatement(sql);

        try {
            ResultSet res = stmt.executeQuery();
            try {
                while (res.next()) {
                    CorregVO correg = new CorregVO();
                    correg.setId(res.getInt("id"));
                    correg.setCodigo(res.getString("codigo"));
                    correg.setDescripcion(res.getString("descripcion"));
                    listCorreg.add(correg);
                }
            } finally {
                res.close();
            }
        } finally {
            stmt.close();
            if (!conn.isClosed()) {
                conn.close();
            }
        }

        return listCorreg;
    }

    @Override
    public List<MupioVO> consultarMupio() throws NamingException, SQLException {
        ConexionDb con = new ConexionDb();
        Connection conn;
        conn = con.traerConexion();

        List<MupioVO> listMupio = new ArrayList<MupioVO>();

        String sql = "select * from tb_municipio";
        //String sql="select * from tb_municipio";
        PreparedStatement stmt = conn.prepareStatement(sql);

        try {
            ResultSet res = stmt.executeQuery();
            try {
                while (res.next()) {
                    MupioVO mupio = new MupioVO();
                    mupio.setId(res.getInt("id"));
                    mupio.setCodigo(res.getString("codigo"));
                    mupio.setDescripcion(res.getString("descripcion"));
                    listMupio.add(mupio);
                }
            } finally {
                res.close();
            }
        } finally {
            stmt.close();
            if (!conn.isClosed()) {
                conn.close();
            }
        }

        return listMupio;
    }

    @Override
    public List<MedicoVO> consultarMedico() throws NamingException, SQLException {
        ConexionDb con = new ConexionDb();
        Connection conn;
        conn = con.traerConexion();

        List<MedicoVO> listMedico = new ArrayList<MedicoVO>();

        String condicion = "";


        String sql = "select * FROM tb_medico " + condicion;


        System.out.println("Buscar Medico: " + sql);


        PreparedStatement stmt = conn.prepareStatement(sql);

        try {
            ResultSet res = stmt.executeQuery();
            try {
                while (res.next()) {
                    MedicoVO medicoVO = new MedicoVO();
                    medicoVO.setId(res.getInt("id"));
                    medicoVO.setIdentificacion(res.getString("numero_identificacion"));
                    medicoVO.setNombre(res.getString("nombre1") + " " + res.getString("nombre2") + " " + res.getString("apellido1") + " " + res.getString("apellido2"));
                    listMedico.add(medicoVO);
                }
            } finally {
                res.close();
            }
        } finally {
            stmt.close();
            if (!conn.isClosed()) {
                conn.close();
            }
        }
        return listMedico;
    }

    @Override
    public List<ServicioVO> consultarServicio() throws NamingException, SQLException {
        ConexionDb con = new ConexionDb();
        Connection conn;
        conn = con.traerConexion();

        List<ServicioVO> listServicio = new ArrayList<ServicioVO>();

        String condicion = "";

        String sql = "select * FROM tb_servicio " + condicion;


        System.out.println("Buscar Servicio: " + sql);


        PreparedStatement stmt = conn.prepareStatement(sql);

        try {
            ResultSet res = stmt.executeQuery();
            try {
                while (res.next()) {
                    ServicioVO servicioVO = new ServicioVO();
                    servicioVO.setId(res.getInt("id"));
                    servicioVO.setCodigo(res.getString("codigo"));
                    servicioVO.setDescripcion(res.getString("descripcion"));
                    servicioVO.setCopago(res.getBoolean("copago"));
                    servicioVO.setEstancia(res.getBoolean("estancia"));
                    listServicio.add(servicioVO);
                }
            } finally {
                res.close();
            }
        } finally {
            stmt.close();
            if (!conn.isClosed()) {
                conn.close();
            }
        }
        return listServicio;
    }

    @Override
    public List<ProgramapypVO> consultarProgramapyp(String codigo, String descripcion) throws NamingException, SQLException {
        ConexionDb con = new ConexionDb();
        Connection conn;
        conn = con.traerConexion();

        List<ProgramapypVO> listProgramapyp = new ArrayList<ProgramapypVO>();

        String condicion = "";


        if (!codigo.equals("")) {
            condicion = "WHERE tb_programapyp.codigo='" + codigo + "'";
        }

        if (!descripcion.equals("")) {
            condicion = "WHERE tb_programapyp.descripcion LIKE '%" + descripcion + "%'";
        }


        String sql = "select * FROM tb_programapyp " + condicion;


        System.out.println("Buscar programapyp: " + sql);


        PreparedStatement stmt = conn.prepareStatement(sql);

        try {
            ResultSet res = stmt.executeQuery();
            try {
                while (res.next()) {
                    ProgramapypVO programapypVO = new ProgramapypVO();
                    programapypVO.setId(res.getInt("id"));
                    programapypVO.setCodigo(res.getString("codigo"));
                    programapypVO.setDescripcion(res.getString("descripcion"));
                    listProgramapyp.add(programapypVO);
                }
            } finally {
                res.close();
            }
        } finally {
            stmt.close();
            if (!conn.isClosed()) {
                conn.close();
            }
        }
        return listProgramapyp;
    }

    @Override
    public List<FinalidadConsultaVO> consultarFinCn() throws NamingException, SQLException {
        ConexionDb con = new ConexionDb();
        Connection conn;
        conn = con.traerConexion();

        List<FinalidadConsultaVO> listFincn = new ArrayList<FinalidadConsultaVO>();

        String condicion = "";

        String sql = "select * FROM tb_finalidadcn" + condicion;


        System.out.println("Buscar Servicio: " + sql);


        PreparedStatement stmt = conn.prepareStatement(sql);

        try {
            ResultSet res = stmt.executeQuery();
            try {
                while (res.next()) {
                    FinalidadConsultaVO finalidadConsultaVO = new FinalidadConsultaVO();
                    finalidadConsultaVO.setId(res.getInt("id"));
                    finalidadConsultaVO.setCodigo(res.getString("codigo"));
                    finalidadConsultaVO.setDescripcion(res.getString("descripcion"));
                    listFincn.add(finalidadConsultaVO);
                }
            } finally {
                res.close();
            }
        } finally {
            stmt.close();
            if (!conn.isClosed()) {
                conn.close();
            }
        }
        return listFincn;
    }
    
    @Override
    public List<FinalidadConsultaVO> consultarFinCnDePyp() throws NamingException, SQLException {
        ConexionDb con = new ConexionDb();
        Connection conn;
        conn = con.traerConexion();

        List<FinalidadConsultaVO> listFincn = new ArrayList<FinalidadConsultaVO>();

        String condicion = "where tb_finalidadcn.id <> 10 ";

        String sql = "select * FROM tb_finalidadcn " + condicion;


        System.out.println("Buscar Servicio: " + sql);


        PreparedStatement stmt = conn.prepareStatement(sql);

        try {
            ResultSet res = stmt.executeQuery();
            try {
                while (res.next()) {
                    FinalidadConsultaVO finalidadConsultaVO = new FinalidadConsultaVO();
                    finalidadConsultaVO.setId(res.getInt("id"));
                    finalidadConsultaVO.setCodigo(res.getString("codigo"));
                    finalidadConsultaVO.setDescripcion(res.getString("descripcion"));
                    listFincn.add(finalidadConsultaVO);
                }
            } finally {
                res.close();
            }
        } finally {
            stmt.close();
            if (!conn.isClosed()) {
                conn.close();
            }
        }
        return listFincn;
    }
    
    @Override
    public FinalidadConsultaVO consultarFinCn(int idfinalidad) throws NamingException, SQLException {
        ConexionDb con = new ConexionDb();
        Connection conn;
        conn = con.traerConexion();


        String condicion = "where tb_finalidadcn.id="+idfinalidad;

        String sql = "select * FROM tb_finalidadcn "+ condicion;


        System.out.println("Buscar Servicio: " + sql);


        PreparedStatement stmt = conn.prepareStatement(sql);
       
        FinalidadConsultaVO finalidadConsultaVO = new FinalidadConsultaVO();

        try {
            ResultSet res = stmt.executeQuery();
            try {
                if (res.next()) {
                   
                    finalidadConsultaVO.setId(res.getInt("id"));
                    finalidadConsultaVO.setCodigo(res.getString("codigo"));
                    finalidadConsultaVO.setDescripcion(res.getString("descripcion"));
                }
            } finally {
                res.close();
            }
        } finally {
            stmt.close();
            if (!conn.isClosed()) {
                conn.close();
            }
        }
        return finalidadConsultaVO;
    }


    @Override
    public List<FinalidadProcedVO> consultarFinPx() throws NamingException, SQLException {
        ConexionDb con = new ConexionDb();
        Connection conn;
        conn = con.traerConexion();

        List<FinalidadProcedVO> listFinpx = new ArrayList<FinalidadProcedVO>();

        String condicion = "";

        String sql = "select * FROM tb_finalidadpx" + condicion;
        PreparedStatement stmt = conn.prepareStatement(sql);
        try {
            ResultSet res = stmt.executeQuery();
            try {
                while (res.next()) {
                    FinalidadProcedVO finalidadProcedVO = new FinalidadProcedVO();
                    finalidadProcedVO.setId(res.getInt("id"));
                    finalidadProcedVO.setCodigo(res.getString("codigo"));
                    finalidadProcedVO.setDescripcion(res.getString("descripcion"));
                    listFinpx.add(finalidadProcedVO);
                }
            } finally {
                res.close();
            }
        } finally {
            stmt.close();
            if (!conn.isClosed()) {
                conn.close();
            }
        }
        return listFinpx;
    }
    
    
    
    
    
    @Override
    public FinalidadProcedVO consultarFinPx(int idFinalidadPx) throws NamingException, SQLException {
        ConexionDb con = new ConexionDb();
        Connection conn;
        conn = con.traerConexion();
        
        FinalidadProcedVO finalidadPx = new FinalidadProcedVO();

        String condicion = "where tb_finalidadpx.id=" + idFinalidadPx ;

        String sql = "select * FROM tb_finalidadpx " + condicion;
        PreparedStatement stmt = conn.prepareStatement(sql);
        try {
            ResultSet res = stmt.executeQuery();
            try {
                if (res.next()) {
                   
                    finalidadPx.setId(res.getInt("id"));
                    finalidadPx.setCodigo(res.getString("codigo"));
                    finalidadPx.setDescripcion(res.getString("descripcion"));
                }
            } finally {
                res.close();
            }
        } finally {
            stmt.close();
            if (!conn.isClosed()) {
                conn.close();
            }
        }
        return finalidadPx;
    }
    
    @Override
    public List<CausaExternaVO> consultarCausaExterna() throws NamingException, SQLException {
        ConexionDb con = new ConexionDb();
        Connection conn;
        conn = con.traerConexion();

        List<CausaExternaVO> listCausaEx = new ArrayList<CausaExternaVO>();

        String condicion = "";

        String sql = "select * FROM tb_causa_externa" + condicion;
        PreparedStatement stmt = conn.prepareStatement(sql);
        try {
            ResultSet res = stmt.executeQuery();
            try {
                while (res.next()) {
                    CausaExternaVO causaExternaVO = new CausaExternaVO();
                    causaExternaVO.setId(res.getInt("id"));
                    causaExternaVO.setCodigo(res.getString("codigo"));
                    causaExternaVO.setDescripcion(res.getString("descripcion"));
                    listCausaEx.add(causaExternaVO);
                }
            } finally {
                res.close();
            }
        } finally {
            stmt.close();
            if (!conn.isClosed()) {
                conn.close();
            }
        }
        return listCausaEx;
    }
     @Override
    public CausaExternaVO consultarCausaExterna(int idcausaexterna) throws NamingException, SQLException {
        ConexionDb con = new ConexionDb();
        Connection conn;
        conn = con.traerConexion();
        
         CausaExternaVO causaExternaVO = new CausaExternaVO();

        String condicion = "where tb_causa_externa.id=" + idcausaexterna;

        String sql = "select * FROM tb_causa_externa " + condicion;
        PreparedStatement stmt = conn.prepareStatement(sql);
        try {
            ResultSet res = stmt.executeQuery();
            try {
                if (res.next()) {
                   
                    causaExternaVO.setId(res.getInt("id"));
                    causaExternaVO.setCodigo(res.getString("codigo"));
                    causaExternaVO.setDescripcion(res.getString("descripcion"));
                }
            } finally {
                res.close();
            }
        } finally {
            stmt.close();
            if (!conn.isClosed()) {
                conn.close();
            }
        }
        return causaExternaVO;
    }

        
    @Override
    public List<TipoDxVO> consultarTipoDx() throws NamingException, SQLException {
        ConexionDb con = new ConexionDb();
        Connection conn;
        conn = con.traerConexion();

        List<TipoDxVO> listTipoDx = new ArrayList<TipoDxVO>();

        String condicion = "";

        String sql = "select * FROM tb_tipodx" + condicion;
        PreparedStatement stmt = conn.prepareStatement(sql);
        try {
            ResultSet res = stmt.executeQuery();
            try {
                while (res.next()) {
                    TipoDxVO tipoDxVO = new TipoDxVO();
                    tipoDxVO.setId(res.getInt("id"));
                    tipoDxVO.setCodigo(res.getString("codigo"));
                    tipoDxVO.setDescripcion(res.getString("descripcion"));
                    listTipoDx.add(tipoDxVO);
                }
            } finally {
                res.close();
            }
        } finally {
            stmt.close();
            if (!conn.isClosed()) {
                conn.close();
            }
        }
        return listTipoDx;
    }

    @Override
    public List<DxVO> consultarDx(String codigo, String descripcion) throws NamingException, SQLException {
        ConexionDb con = new ConexionDb();
        Connection conn;
        conn = con.traerConexion();

        List<DxVO> listDxVO = new ArrayList<DxVO>();

        String condicion = "";


        if (!codigo.equals("") && descripcion.equals("")) {
            condicion = "WHERE tb_diagnostico.codigo='" + codigo + "'";
        } else if (!descripcion.equals("")) {
            condicion = "WHERE tb_diagnostico.descripcion||tb_diagnostico.codigo LIKE '%" + descripcion + "%'";
        }

        String sql = "SELECT tb_diagnostico.id, tb_diagnostico.codigo,"
                + "tb_diagnostico.descripcion"
                + " FROM tb_diagnostico "
                + condicion + " limit 10";

        System.out.println("Sql buscar dx codigo: " + sql);

        PreparedStatement stmt = conn.prepareStatement(sql);
        try {
            ResultSet res = stmt.executeQuery();
            try {
                while (res.next()) {
                    DxVO dxVO = new DxVO();
                    dxVO.setId(res.getInt("id"));
                    dxVO.setCodigo(res.getString("codigo"));
                    dxVO.setDescripcion(res.getString("descripcion"));
                    listDxVO.add(dxVO);

                }
            } finally {
                res.close();
            }
        } finally {
            stmt.close();
            if (!conn.isClosed()) {
                conn.close();
            }
        }

        return listDxVO;
    }

    @Override

    public DxVO consultarDx(int iddiagnostico) throws NamingException, SQLException{
     ConexionDb con = new ConexionDb();
        Connection conn;
        conn = con.traerConexion();


        String condicion = "";
        
        condicion = "WHERE tb_diagnostico.id='" + iddiagnostico + "'";

        String sql = "SELECT tb_diagnostico.id, tb_diagnostico.codigo,"
                + "tb_diagnostico.descripcion"
                + " FROM tb_diagnostico " + condicion;

        System.out.println("Sql buscar dx id: " + sql);

        
        PreparedStatement stmt = conn.prepareStatement(sql);
        
        DxVO dxVO = new DxVO();
        try {
            ResultSet res = stmt.executeQuery();
            try {
                if (res.next()) {
                    
                    dxVO.setId(res.getInt("id"));
                    dxVO.setCodigo(res.getString("codigo"));
                    dxVO.setDescripcion(res.getString("descripcion"));

                }
            } finally {
                res.close();
            }
        } finally {
            stmt.close();
            if (!conn.isClosed()) {
                conn.close();
            }
        }

        return dxVO;
    }    
    
    
    
    
    @Override
    public List<AccesoriaVO> consultarAccesoria(String tabla) throws NamingException, SQLException {
        ConexionDb con = new ConexionDb();
        Connection conn;
        conn = con.traerConexion();

        List<AccesoriaVO> listAccesoriaVO = new ArrayList<AccesoriaVO>();

        String condicion = tabla;

        String sql = "select * FROM " + condicion;


        System.out.println("Accesoria: " + sql);

        PreparedStatement stmt = conn.prepareStatement(sql);
        try {
            ResultSet res = stmt.executeQuery();
            try {
                while (res.next()) {
                    AccesoriaVO accesoriaVO = new AccesoriaVO();
                    accesoriaVO.setId(res.getInt("id"));
                    accesoriaVO.setCodigo(res.getString("codigo"));
                    accesoriaVO.setDescripcion(res.getString("descripcion"));
                    listAccesoriaVO.add(accesoriaVO);
                }
            } finally {
                res.close();
            }
        } finally {
            stmt.close();
            if (!conn.isClosed()) {
                conn.close();
            }
        }
        return listAccesoriaVO;
    }

    @Override
    public List<CuentaCobroVO> consultarCuentaCobro(String numero, String entidad) throws NamingException, SQLException {
        ConexionDb con = new ConexionDb();
        Connection conn;
        conn = con.traerConexion();

        List<CuentaCobroVO> listCuentaCobro = new ArrayList<CuentaCobroVO>();

        String condicion = "";


        if (!numero.equals("")) {
            condicion = " WHERE tb_cuentacobro.numero='" + numero + "'";
        }

        if (!entidad.equals("")) {
            condicion = " WHERE tb_entidad.descripcion LIKE '%" + entidad + "%'";
        }


        String sql = "select "
                + "tb_cuentacobro.id,"
                + "tb_cuentacobro.numero,"
                + "tb_entidad.descripcion"
                + " FROM tb_cuentacobro "
                + "INNER JOIN tb_entidad ON (tb_cuentacobro.identidad = tb_entidad.id_entidad)" + condicion;


        System.out.println("Buscar entidad: " + sql);


        PreparedStatement stmt = conn.prepareStatement(sql);

        try {
            ResultSet res = stmt.executeQuery();
            try {
                while (res.next()) {
                    CuentaCobroVO cuentaCobroVO = new CuentaCobroVO();
                    cuentaCobroVO.setId(res.getInt("id"));
                    cuentaCobroVO.setNumero(res.getString("numero"));
                    cuentaCobroVO.setEntidad(res.getString("descripcion"));
                    listCuentaCobro.add(cuentaCobroVO);
                }
            } finally {
                res.close();
            }
        } finally {
            stmt.close();
            if (!conn.isClosed()) {
                conn.close();
            }
        }
        return listCuentaCobro;
    }
    Session sesion;

    @Override
    public List<TbConfigUsuario> consultarConfigUsuario() {
        sesion = HibernateUtil.getSessionFactory().openSession();

        Query q;

        q = sesion.createQuery("from TbConfigUsuario");

        return q.list();
    }

    @Override
    public void guardarConfigAmbiente(TbConfigAmbiente ambiente) {
        sesion = HibernateUtil.getSessionFactory().openSession();
        sesion.beginTransaction();
        sesion.saveOrUpdate(ambiente);
        sesion.getTransaction().commit();
        sesion.close();
    }

    @Override
    public TbConfigAmbiente consultarConfigAmbiente(int id, int idUsuario) {
        sesion = HibernateUtil.getSessionFactory().openSession();
        Query q;
        q = sesion.createQuery("from TbConfigAmbiente where idConfigUsuario=? and idUsuario=?").setInteger(0, id).setInteger(1, idUsuario);
        return (TbConfigAmbiente) q.uniqueResult();
    }

    @Override
    public void actualizarConfigAmbiente(int id, String activo) {
        sesion = HibernateUtil.getSessionFactory().openSession();

        Query q;

        try {
            sesion.beginTransaction();
            String sql = "UPDATE tb_config_ambiente SET "
                    + "  activo = ?"
                    + " WHERE id=?";
            q = sesion.createSQLQuery(sql).setString(0, activo).setInteger(1, id);
            q.executeUpdate();
            sesion.getTransaction().commit();
        } catch (HibernateException e) {
            e.printStackTrace();

        }
    }

    @Override
    public List<TbDiagnostico> traerDiagnosticos(String terminoBusqueda)  {
        sesion = HibernateUtil.getSessionFactory().openSession();
        Query q;
        q = sesion.createQuery("from TbDiagnostico where id=? ").setString(0, terminoBusqueda);
        return q.list();

    }

    @Override
    public TbDiagnostico traerDiagnostico(String codigo)  {
        sesion = HibernateUtil.getSessionFactory().openSession();
        Query q;
        q = sesion.createQuery("from TbDiagnostico where codigo=? ").setString(0, codigo);

        return (TbDiagnostico) q.uniqueResult();

    }

    @Override
    public List<TbDiagnostico> traerDiagnosticoCodigo(String codigo)  {
        sesion = HibernateUtil.getSessionFactory().openSession();
        Query q;
        q = sesion.createQuery("from TbDiagnostico where codigo=? ").setString(0, codigo);
        return q.list();


    }

    @Override
    public List<TbPrestador> traerPrestadores(String terminoBusqueda)  {
        sesion = HibernateUtil.getSessionFactory().openSession();
        Query q;
        q = sesion.createQuery("from TbPrestador where id=? ").setString(0, terminoBusqueda);
        return q.list();

    }

    @Override
    public List<TbPrestador> traerPrestadoresConsulta(String codigo)  {
        sesion = HibernateUtil.getSessionFactory().openSession();
        Query q;
        q = sesion.createQuery("from TbPrestador where codigo=? ").setString(0, codigo);
        return q.list();


    }

    @Override
    public TbPrestador traerPrestadorCodigo(String codigo)  {
        sesion = HibernateUtil.getSessionFactory().openSession();
        Query q;
        q = sesion.createQuery("from TbPrestador where codigo=? ").setString(0, codigo);

        return (TbPrestador) q.uniqueResult();


    }

    @Override
    public List<TbAcompanante> traerAcompananteIdentificacion(String identificacion)  {
        sesion = HibernateUtil.getSessionFactory().openSession();
        Query q;
        q = sesion.createQuery("from TbAcompanante where id=? ").setString(0, identificacion);
        return q.list();

    }

    @Override
    public TbAcompanante traerAcompananteIdentificacionObj(String terminoBusqueda)  {
        sesion = HibernateUtil.getSessionFactory().openSession();
        Query q;
        q = sesion.createQuery("from TbAcompanante where codigo=? ").setString(0, terminoBusqueda);

        return (TbAcompanante) q.uniqueResult();

    }

    @Override
    public List<TbAcompanante> traerAcompananteNombre(String nombre)  {
        sesion = HibernateUtil.getSessionFactory().openSession();
        Query q;
        q = sesion.createQuery("from TbAcompanante where codigo=? ").setString(0, nombre);

        return q.list();


    }
    
    
    @Override
    public AmbitoVO consultarAmbitoPx(int idAmbitoPx) throws NamingException, SQLException {
        ConexionDb con = new ConexionDb();
        Connection conn;
        conn = con.traerConexion();
        
        AmbitoVO ambitoVO = new AmbitoVO();

        String condicion = "where tb_ambitopx.id="+idAmbitoPx ;

        String sql = "select * FROM tb_ambitopx " + condicion;
        PreparedStatement stmt = conn.prepareStatement(sql);
        try {
            ResultSet res = stmt.executeQuery();
            try {
                if (res.next()) {
                   
                    ambitoVO.setId(res.getInt("id"));
                    ambitoVO.setCodigo(res.getString("codigo"));
                    ambitoVO.setDescripcion(res.getString("descripcion"));
                }
            } finally {
                res.close();
            }
        } finally {
            stmt.close();
            if (!conn.isClosed()) {
                conn.close();
            }
        }
        return ambitoVO;
    }
    
    @Override
    public List<TbFechanoagenda> traerFechasNoAgenda(Date fecha)  {
        sesion = HibernateUtil.getSessionFactory().openSession();
        Query q;
        q = sesion.createQuery("from TbFechanoagenda where fecha=? ").setDate(0, fecha);
        return q.list();

    }
    
    
   @Override
    public List<TbFechanoagenda> traerFechasNoAgenda()  {
        sesion = HibernateUtil.getSessionFactory().openSession();
        Query q;
              
        q = sesion.createQuery("from TbFechanoagenda");

        return q.list();
        
        

    }
   
   
    @Override
    public List<TbFechanoagenda> traerFechasNoAgenda(Date fechai, Date fechaf)  {
        
        java.util.Date feccita = fechai;
        java.sql.Date feccitasql = new java.sql.Date(feccita.getTime());
        java.util.Date feccita1 = fechaf;
        java.sql.Date feccitasql1 = new java.sql.Date(feccita1.getTime());
        
        sesion = HibernateUtil.getSessionFactory().openSession();
        Query q;
        q = sesion.createQuery("from TbFechanoagenda where fecha between ? and ?").setDate(0, feccitasql).setDate(1,feccitasql1) ;
        return q.list();

    }
   
   
   
   
   
    
   
    
    
}

    
